private _byName: { [fullPath: string]: HTMLElement; } = {}; private _parentElement: HTMLElement,
private _document: { createElement(tag: string): HTMLElement; }) { var editedUTCValue = this._parentElement.getAttribute('data-edited-utc'); this.editedUTC = parseInt(editedUTCValue);
catch (parseEditedUTCError) { load(recipient: LoadStorageRecipient): void { var dodgyElements: HTMLElement[] = [];
var fileCount: number = 0;
var fileCountStr = this._parentElement.getAttribute('data-teapo-file-count'); fileCount = parseInt(fileCountStr);
recipient.files(fileCount);
for (var i = 0; i < this._parentElement.children.length; i++) { var fileElement = this._parentElement.children[i];
if (this._loadFromElement(fileElement, recipient))
dodgyElements.push(fileElement);
for (var i = 0; i < dodgyElements.length; i++) { this._parentElement.removeChild(dodgyElements[i]);
this._parentElement.setAttribute('data-teapo-file-count', <any>fileCount); var updater = this._createUpdater();
recipient.completed(updater);
filesByName: { [fullPath: string]: { [propertyName: string]: string; }; }, callback: (error: Error, updater: attached.UpdateStorage) => void): void { this._wipeExistingElement();
this._parentElement.setAttribute('data-edited-utc', editedUTC + ''); this.editedUTC = editedUTC;
for (var fullPath in filesByName) if (filesByName.hasOwnProperty(fullPath)) { var element = UpdateStorage.createElement(this._parentElement, fullPath, this._document);
var pbag = filesByName[fullPath];